package cn.bgs.controller;

import cn.bgs.pojo.Emp;
import cn.bgs.pojo.Vo;
import cn.bgs.service.EmpService;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.List;

@Controller
@RequestMapping("/emp")
public class EmpController {

    @Autowired
    private EmpService empService;

    //查询全部Emp信息
    //pageNum 是前端获取的页码
    @RequestMapping("/findAll")
    public String findAll (@RequestParam(defaultValue = "1") Integer pageNum, Model m){

        //分页的limit中有俩个参数
        //单签页码和每页条数
        Integer pageSize=5;
        //分页插件的封装对象

        PageInfo<Emp> p = empService.findAll(pageNum,pageSize);
        System.out.println("eamp"+p);
        //把分页数据信息返回到前端
        m.addAttribute("p",p);

/*        List<Emp> list = empService.findAll();

        m.addAttribute("list",list);*/

        return "list";
    }

    //修改Emp的多条数据
    @RequestMapping("/updateAll")
    public String updateAll(Vo vo){
        //获取装有数据的list集合
        List<Emp> emps = vo.getEmps();
        empService.updateAll(emps);
        return "redirect:/emp/findAll";
    }






    //批量添加
    @RequestMapping("/insert")
    @ResponseBody
    public String insert (){
        Emp e1 = new Emp();
        e1.seteName("小王");
        e1.setSal(800);
        e1.setDid(10);

        Emp e2 = new Emp();
        e2.seteName("小红");
        e2.setSal(500);
        e2.setDid(10);

        Emp e3 = new Emp();
        e3.seteName("小美");
        e3.setSal(600);
        e3.setDid(10);

        List<Emp> emps = new ArrayList<>();

        emps.add(e1);
        emps.add(e2);
        emps.add(e3);

        empService.insert(emps);

    return "ok!!!";
    }

    //查询多个传入数组
    @RequestMapping("/findByList")
    @ResponseBody
    public List<Emp> findByList(){



        List<Integer> list=new ArrayList<>();
        list.add(20);
        list.add(21);
        list.add(59);
        list.add(60);
        list.add(23);

//        List<Integer> list = Arrays.asList(20, 21, 22,59,60);

        return empService.findByList(list);
    }



    //查询多个传入数组
    @RequestMapping("/findByArray")
    @ResponseBody
    public List<Emp> findByArray(){

        Integer[] arr={20,59,60,21,22,23,24};

        return empService.findByArray(arr);
    }

    //修改使用动态sql
    @RequestMapping("/update")
    @ResponseBody
    public String update(){
        Emp emp=new Emp();

        emp.setId(17);
        emp.seteName("马梅");
        emp.setSal(800);
        //emp.setDid(10);

        empService.update(emp);

        return "OK!!!";
    }


    //根据条件动态的查询if
    @RequestMapping("/findByIf")
    @ResponseBody
    public List<Emp> findByIf(){
        //16  马冬梅   18888   40

        Emp emp = new Emp();

//        emp.setId(16);
//        emp.seteName("马冬梅");
        emp.setSal(18888);
        emp.setDid(40);

        return empService.findByIf(emp);
    }


    //根据id查询emp表信息,包括部门的信息使用分步查询
    @RequestMapping("/fenbuEmp")
    public String fenbuEmp(Model m){
        Integer id=20;
        Emp emp=empService.fenbuEmp(id);
        m.addAttribute("emp",emp);
        return "show1";
    }


    //根据Emp的id查询所有信息,包括部门的信息(记得在emp中定义dept)
    @RequestMapping("/findById1")
//    @ResponseBody
    public String findById1(Model m){
        Integer id = 20;
        Emp emp = empService.findById1(id);

        m.addAttribute("emp",emp);

        return "show1";
    }


    @RequestMapping("/findById")
    public String findById(Model m){
        Integer id = 20;
       Emp emp = empService.findById(id);

       m.addAttribute("emp",emp);

       return "show1";
    }




}
